package com.yaodian100.ec.payment.entity;

import java.math.BigDecimal;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;

import com.yaodian100.core.common.entity.BaseEntity;

/**
 * 汇款认领单
 * 
 * @author feeling.wang
 * 
 */
@Entity
@Table(name = "EC_APPLY_CLAIM")
public class ApplyClaim extends BaseEntity {

	private static final long serialVersionUID = 7222322390690027257L;

	/**
	 * 招领单号
	 */
	@Id
	@GeneratedValue(generator = "ec_apply_claim_seq")
	@GenericGenerator(name = "ec_apply_claim_seq", strategy = "com.yaodian100.core.common.dao.hibernate.SeqStringGenerator", parameters = {
			@Parameter(name = "sequence", value = "ec_apply_claim_seq"), @Parameter(name = "pattern", value = "CL0000000000") })
	@Column(name = "ID", length = 12, nullable = false)
	private String id;

	/**
	 * 原汇款资料(BankTransfer)编号
	 */
	@Column(name = "BANK_TRANSFER_ID", length = 20, nullable = false)
	private String bankTransferId;

	/**
	 * 会员编号
	 */
	@Column(name = "MEMBER_ID", length = 10, nullable = false)
	private String memberId;

	/**
	 * 订单编号
	 */
	@Column(name = "ORDER_ID", length = 13, nullable = false)
	private String orderId;

	/**
	 * 汇款人全称
	 */
	@Column(name = "CLAIM_NAME", length = 12, nullable = false)
	private String claimName;

	/**
	 * 汇款行名称
	 */
	@Column(name = "BANK_NAME", length = 30, nullable = false)
	private String bankName;

	/**
	 * 您希望的处理方式(1- 支付訂單, 2- 退款我的耀点)
	 */
	@Column(name = "CLAIM_TYPE", length = 1, nullable = false)
	private String claimType;

	/**
	 * 汇款时间
	 */
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "EXPECT_DATE", nullable = false)
	private Date expectDate;

	/**
	 * 汇款金额
	 */
	@Column(name = "CLAIM_AMOUNT", nullable = false, columnDefinition = "numeric(10,2)")
	private BigDecimal claimAmount;

	/**
	 * 联络方式-电话
	 */
	@Column(name = "CONTACT_PHONE", length = 15)
	private String contactPhone;

	/**
	 * 联络方式-地址
	 */
	@Column(name = "CONTACT_ADDRESS", length = 150)
	private String contactAddress;

	/**
	 * 联络方式-电子邮件
	 */
	@Column(name = "CONTACT_EMAIL", length = 100)
	private String contactEmail;

	/**
	 * 招领状态(10:申請中，70：招領成功，90:招領失敗，60:退费成功，80:退费失败)
	 */
	@Column(name = "CLAIM_STATUS", length = 2, nullable = false)
	private String claimStatus;

	/**
	 * 申请招领日期
	 */
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "APPLY_DATE", nullable = false)
	private Date applyDate;

	/**
	 * 招领失败理由
	 */
	@Column(name = "CLAIM_REASON", length = 200)
	private String claimReason;

	/**
	 * 上传图檔副檔名
	 */
	@Column(name = "IMG_SUBNAME", length = 5, nullable = false)
	private String imgSubName;

	/**
	 * 财务批准日期
	 */
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "REVIEW_DATE")
	private Date reviewDate;

	public Date getApplyDate() {
		return applyDate;
	}

	public String getBankName() {
		return bankName;
	}

	public String getBankTransferId() {
		return bankTransferId;
	}

	public BigDecimal getClaimAmount() {
		return claimAmount;
	}

	public String getClaimName() {
		return claimName;
	}

	public String getClaimReason() {
		return claimReason;
	}

	public String getClaimStatus() {
		return claimStatus;
	}

	public String getClaimType() {
		return claimType;
	}

	public String getContactAddress() {
		return contactAddress;
	}

	public String getContactEmail() {
		return contactEmail;
	}

	public String getContactPhone() {
		return contactPhone;
	}

	public Date getExpectDate() {
		return expectDate;
	}

	public String getId() {
		return id;
	}

	public String getImgSubName() {
		return imgSubName;
	}

	public String getMemberId() {
		return memberId;
	}

	public String getOrderId() {
		return orderId;
	}

	public void setApplyDate(Date applyDate) {
		this.applyDate = applyDate;
	}

	public void setBankName(String bankName) {
		this.bankName = bankName;
	}

	public void setBankTransferId(String bankTransferId) {
		this.bankTransferId = bankTransferId;
	}

	public void setClaimAmount(BigDecimal claimAmount) {
		this.claimAmount = claimAmount;
	}

	public void setClaimName(String claimName) {
		this.claimName = claimName;
	}

	public void setClaimReason(String claimReason) {
		this.claimReason = claimReason;
	}

	public void setClaimStatus(String claimStatus) {
		this.claimStatus = claimStatus;
	}

	public void setClaimType(String claimType) {
		this.claimType = claimType;
	}

	public void setContactAddress(String contactAddress) {
		this.contactAddress = contactAddress;
	}

	public void setContactEmail(String contactEmail) {
		this.contactEmail = contactEmail;
	}

	public void setContactPhone(String contactPhone) {
		this.contactPhone = contactPhone;
	}

	public void setExpectDate(Date expectDate) {
		this.expectDate = expectDate;
	}

	public void setId(String id) {
		this.id = id;
	}

	public void setImgSubName(String imgSubName) {
		this.imgSubName = imgSubName;
	}

	public void setMemberId(String memberId) {
		this.memberId = memberId;
	}

	public void setOrderId(String orderId) {
		this.orderId = orderId;
	}

	public Date getReviewDate() {
		return reviewDate;
	}

	public void setReviewDate(Date reviewDate) {
		this.reviewDate = reviewDate;
	}
}